const path = require('path')
const fs = require('fs')
const resolve = (...file) => path.resolve(__dirname, ...file)

// 导入模板
const {vueTemplate } = require('./template')

console.log('请输入要生成的页面组件名称、会生成在 views/目录下')
process.stdin.on('data', async chunk => {
    const input =  String(chunk).trim().toString()
    const file = resolve('../../src/views/' + input + '.vue'); 
    createFile(file,getName(input));
    console.log('创建成功',file)
    process.stdin.emit('end')
})
process.stdin.on('end', () => {
    process.exit()
})

//创建文件按
function createFile(file,className){
    let fileArry = file.split('\\');
    let fileName = fileArry[fileArry.length - 1];
    let filePath = file.replace('\\' + fileName,'');
    createPath(filePath);
    if(fs.existsSync(file)){
        console.log('文件已存在：',file)
    }
    else{
        console.log('开始创建文件')
        fs.writeFileSync(file,vueTemplate(className),err=>{
            console.log('文件创建',err);
        })
    }
}

//创建目录
function createPath(data){
    let pathArr = data.split('\\');
    let pathCurrent = '';//当前路径
    for(let i=0;pathArr.length>i;i++){
        pathCurrent += pathArr[i] + '\\';
        let d = path.dirname(pathCurrent)
        if(fs.existsSync(pathCurrent)){
            //console.log('目录已存在：',pathCurrent)
        }
        else{
            fs.mkdir(pathCurrent,function(err){
                if(err){
                    return console.error(err)
                }
            })
        }
    }
}

//获取组件名称
function getName(data){
    var d = data.split('/')
    for(i=1;d.length>i;i++){
        d[i] = d[i].charAt(0).toUpperCase() + d[i].slice(1);
    }
    return d.join('');
}
